#include "PrimaryGeneratorAction.hh"

#include "G4Event.hh"
#include "G4ParticleGun.hh"
#include "G4ParticleTable.hh"
#include "G4ParticleDefinition.hh"
#include "G4RandomDirection.hh"

PrimaryGeneratorAction::PrimaryGeneratorAction()
{
  // создаем источник частиц		Construction de la source de particules.
  // источник испускает по одной частице		La source émet 1 particule
  particleGun = new G4ParticleGun(1);

  G4ParticleTable* particleTable = G4ParticleTable::GetParticleTable();
  G4ParticleDefinition* gamma = particleTable->FindParticle("gamma");
  // устанавливаем тип и энергию частиц, координаты положения источника
  //Choix du type de particule, de l'énergie et des coordonnées de la source.
  particleGun->SetParticleDefinition(gamma);
  particleGun->SetParticleEnergy(100*keV);
  particleGun->SetParticlePosition(G4ThreeVector(0, 0, 0));
}

PrimaryGeneratorAction::~PrimaryGeneratorAction()
{
  delete particleGun;
}

void PrimaryGeneratorAction::GeneratePrimaries(G4Event* event)
{
  // задаем случайное направление излучения
  //Choix au hasard de la direction des particules
  particleGun->SetParticleMomentumDirection(G4RandomDirection());
  // источник испускает одну частицу
  //La source émet une particule
  particleGun->GeneratePrimaryVertex(event);
}

